﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace 群智感知激励系统服务端底层
{
    public class 任务
    {
        static int 序号 = 0;
        public List<string> 任务采集列表 = new List<string>();
        public int 数据量;
        static public int 任务总数 = 10;
        static public int 已完成任务 = 0;
        static public List<任务> 任务列表 = new List<任务>();
        static public List<任务> 添加列表 = new List<任务>();
        static public List<任务> 删除列表 = new List<任务>();
        public 用户 所属用户;
        public List<虚拟货币> 抵押货币 = new List<虚拟货币>();
        static Hashtable hashtable = new Hashtable();

        static Random ran = new Random();
        public enum 任务类型 : byte { A, B, C }
        static public 任务类型[] 随机类型 = Enum.GetValues(typeof(任务类型)) as 任务类型[];
        public 任务类型 类型
        {
            get
            {
                if (数据量 <= 3)
                    return 任务类型.A;
                else if (数据量 <= 5)
                    return 任务类型.B;
                else
                    return 任务类型.C;
            }
        }
        public int 数据增量
        {
            get
            {
                if (类型 == 任务类型.A)
                    return 1;
                else if (类型 == 任务类型.B)
                    return 2;
                else
                    return 3;
            }    
        }
        public 任务(int _数据量)
        {
            int num = hashtable.Count+1;
            for (int i = 0; hashtable.Count < num; i++)
            {
                任务id = 序号++;
                if (!hashtable.ContainsValue(任务id))
                {
                    hashtable.Add(任务id, 任务id);
                }
            }
            数据量 = _数据量;
        }
        public double 任务完成情况
        {
            get
            {
                if (任务采集列表.Count > 数据量)
                    return 100;
                return 100 * 任务采集列表.Count / (double)数据量;
            }
        }
        public int 任务id
        {
            get; set;
        }
        public double 匿名度
        {
            get { return 1 - 数据量 * 0.05; }
        }
        public int 激励金额
        {
            get
            {
                if (类型 == 任务类型.A)
                    return 1;
                else if (类型 == 任务类型.B)
                    return 2;
                else
                    return 3;
            }
        }
        public class Icp : IComparer<任务>
        {
            //按书名排序
            public int Compare(任务 x, 任务 y)
            {
                return x.匿名度.CompareTo(y.匿名度);
            }
        }
        static public void 产生任务(int num)
        {
            for (int i = 0; i < num; i++)
            {
                任务 新任务 = new 任务(ran.Next(3, 10));
                任务列表.Add(新任务);
                虚拟货币.激励金额总数 += 新任务.激励金额;
            }
            //任务列表.Sort(new Icp());
        }
    }
}
